package prototype.actors;

import factory_method.roles.ConcreteProduct;
import prototype.actors.framework.Product;

/**
 * @author chj
 * 类名：UnderlinePen
 * 类型：具体类
 * 类含义：表示给字符串加下划线并使其显示出来的对象
 * 设计模式角色：ConcreteProduct
 */
public class UnderlinePen extends Product implements ConcreteProduct {
    /**
     * @author chj
     * 属性含义：表示装饰字符串的字符（下划线样式）。
     */
    private final char underlineChar;

    public UnderlinePen(char underlineChar) {
        this.underlineChar = underlineChar;
    }

    /**
     * @author chj
     * 方法含义：表示使用操作，输出使用装饰字符装饰字符串后的字符画。
     * @param s 传入的字符串
     */
    @Override
    public void use(String s) {
        int length = s.getBytes().length;
        System.out.println("\"" + s + "\"");
        System.out.print(" ");
        for (int i = 0; i < length; i++) {
            System.out.print(underlineChar);
        }
        System.out.println();
    }

    /**
     * @author chj
     * 方法含义：表示“复制实例”操作，通过clone()方法复制自身。
     * @return 复制得到的实例
     */
    @Override
    public Product createClone() {
        Product p = null;
        try {
            p = (Product) clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return p;
    }
}
